月の途中で RDS のデータベースを作成した場合、月のストレージ使用量はどう計算されるのか確認してみた
最初に
RDS のデータベースを作成した際のストレージ使用量の計算方法について問い合わせがあり、計算方法自体が分かりにくかったため今回記事として公開することにいたしました。
RDSのデータベースストレージの料金について
RDS のデータベースストレージの料金については、お客様が用意したストレージの使用料が課金されるとの記載があります。
料金 - Amazon RDS for MySQL | AWS
お客様が用意したストレージの使用料が課金されます。
もう少し詳細を見てみましょう。
Amazon RDS 向け DB インスタンスの請求 - Amazon Relational Database Service
ストレージ (1 か月当たりの GiB) - DB インスタンスにプロビジョニングしたストレージ容量。準備したストレージ容量を当月以内に拡張した場合、請求は比例配分されます。 詳細については、「Amazon RDS DB インスタンスストレージ」を参照してください。
請求が比例配分されるという記載が分かりにくかったので、英語ドキュメントを参照し、改めて日本語に翻訳してみました。
英語「If you scale your provisioned storage capacity within the month, your bill is prorated.」
↓
再度日本語に翻訳「月内にプロビジョニングしたストレージ容量を拡張した場合、請求額は日割り計算されます。」
日割り計算の部分が月の途中で DB を作成した場合の月のストレージの使用量を求めることに関係しそうなので、実際に値がどう計算されているか Amazon RDS for MySQL の DB を起動して確認してみました。
確認内容・結果
① Amazon RDS for MySQL の DB を起動し、30分程度経過後、DB を削除しました
- リージョン:大阪
- ストレージ:20 GiB
- インスタンスクラス:db.t3.micro
② CostExplorer にて、日程・サービス・リージョンを指定し、以下2つの使用タイプにおける使用量を取得しました
- 使用タイプ:APN3-RDS:GP2-Storage 使用量:0.0140681003(GB-Month)
- 使用タイプ:APN3-InstanceUsage:db.t3.micro 使用量:0.523332(Hrs)
③DBの稼働時間を元に月のストレージ使用量がどのように計算されているかを求めました
20GiBのストレージを1ヶ月(31日間)の間に0.523332(Hrs)利用
- DBの稼働時間:0.523332(Hrs)
- 検証を行った月:3月(月の日数31)
- 対象のDBのストレージ:20GiB
月のストレージ使用量
20(GiB)* 0.523332(Hrs)/(24(Hrs)*31(日数))= 0.014068064(GB-Month)
※②の使用タイプ:APN3-RDS:GP2-Storage の使用量とほぼ一致
以上から、月のストレージ使用量は当月の日数によって日割り計算されていることが分かりました。 計算式は以下になります。
DBのストレージ(GiB)× DBの月の稼働時間(Hrs)/ (当月の日数 × 24(Hrs))
補足
タイムゾーンについて
AWS では協定世界時(UTC)を基準に請求金額を計算しています。 日本標準(JST)と協定世界時(UTC)との時差は9時間あるため、月を超えてもその月の9時までは前月の料金として計算されます。
そのため、例えば3月の利用料金については日本標準(JST)の場合、3/1 9時から4/1 8時台までが3月分の利用料金として計上されます。
請求の最小単位について
Amazon RDS が秒単位の請求をサポートするようになりました
RDS では秒単位での請求が発生いたします。
最後に
今回のブログが RDS データベースストレージの月のストレージ使用量を求める方法としてお役に立てば幸いです。